home *** CD-ROM | disk | FTP | other *** search
- /* --------------------------------------------------------------------- */
- /* SETPRTR - Send printer setup codes to the IBM (MX-80) printer */
- /* Written for public domain distribution in */
- /* Caprock Systems Small-c:pc */
- /* by Michael Burton */
- /* 320 Highland Dr. Apt 203 */
- /* Glen Burnie, MD 21061 */
- /* (301)768-8358 */
- /* */
- /* Version 1.0 09 May 1983 */
- /* --------------------------------------------------------------------- */
-
- #define CMPRSON 15 /* Compress code */
- #define CMPRSOFF 146 /* Uncompress code */
- #define DSOFF 200 /* Double strike off code */
- #define ESC 27 /* Escape code */
- #define CR 13 /* Carriage return */
- #define LF 10 /* Linefeed */
- #define BS 08 /* Backspace */
- #define TRUE 01
-
- int cmd;
-
- /* Beginning of SETPRTR main program */
-
- main()
- {
- clrscreen();
- putline(" IBM/EPSON MX-80 Printer Setup");
- putline(" by Michael Burton ");
- putline(" ");
- putline("A] Double width on L] Double width off");
- putline("B] Compressed on M] Compressed off");
- putline("C] Underlining on N] Underlining off");
- putline("D] Emphasized on P] Emphasized off");
- putline("E] Doublestrike on Q] Doublestrike off");
- putline("F] Superscript on R] Superscript off");
- putline("G] Subscript on S] Subscript off");
- putline("H] Italics on T] Italics off");
- putline("I] Perf skip set U] Perf skip off");
- putline("J] Column width set V] Page length set");
- putline("K] Printer reset W] Return to DOS");
-
- while (TRUE)
- {
- putcurs(16,0);
- puts("Selection? ");
- putchar(BS);
- cmd = getchar() | 32;
-
- if (cmd == 'a')
- {
- prt3chr(ESC,'W',1);
- finmes("Double Width Print on");
- }
- if (cmd == 'b')
- {
- prtchr(CMPRSON);
- finmes("Compressed Print on");
- }
- if (cmd == 'c')
- {
- prt3chr(ESC,'-',1);
- finmes("Underline on");
- }
- if (cmd == 'd')
- {
- prt2chr(ESC,'E');
- finmes("Emphasized Print on");
- }
- if (cmd == 'e')
- {
- prt2chr(ESC,'G');
- finmes("Double Strike Print on");
- }
- if (cmd == 'f')
- {
- prt3chr(ESC,'S',0);
- finmes("Superscript on");
- }
- if (cmd == 'g')
- {
- prt3chr(ESC,'S',1);
- finmes("Subscript on");
- }
- if (cmd == 'h')
- {
- prt2chr(ESC,'4');
- finmes("Italics on");
- }
- if (cmd == 'i')
- {
- getinall("Perf skip how many lines? ",0,128,'N',"Perf skip set");
- }
- if (cmd == 'j')
- {
- getinall("No. of columns? ",0,232,'Q',"Column width set");
- }
- if (cmd == 'k')
- {
- prt2chr(ESC,'@');
- finmes("Printer Reset");
- }
- if (cmd == 'l')
- {
- prt3chr(ESC,'W',0);
- finmes("Double Width Print off");
- }
- if (cmd == 'm')
- {
- prtchr(CMPRSOFF);
- finmes("Compressed Print off");
- }
- if (cmd == 'n')
- {
- prt3chr(ESC,'-',0);
- finmes("Underline off");
- }
- if (cmd == 'p')
- {
- prt2chr(ESC,'F');
- finmes("Emphasized Print off");
- }
- if (cmd == 'q')
- {
- prt2chr(ESC,DSOFF);
- finmes("Double Strike Print off");
- }
- if (cmd == 'r')
- {
- prt2chr(ESC,DSOFF);
- finmes("Superscript off");
- }
- if (cmd == 's')
- {
- prt2chr(ESC,DSOFF);
- finmes("Subscript off");
- }
- if (cmd == 't')
- {
- prt2chr(ESC,'5');
- finmes("Italics off");
- }
- if (cmd == 'u')
- {
- prt2chr(ESC,'O');
- finmes("Perf skip off");
- }
- if (cmd == 'v')
- {
- getinall("How many lines? ",0,128,'C',"Page length set");
- }
- if (cmd == 'w') exit();
- if (cmd == 'x') prtline();
- if (cmd < 'a' | cmd > 'x')
- bell();
- else
- delay(6000);
- }
- }
-
- /* End of SETPRTR main program */
- /* Beginning of support functions */
-
- delay(n) /* Wait a while */
- int n;
- {
- int i;
-
- i = 0;
- while (i++ < n) {
- }
- while (i-- > 0) {
- }
- clearline(20);
- }
-
- prtline() /* Diagnostic. Print a line on the printer. */
- {
- char buff[41];
- int i;
-
- i = 0;
- clearline(16);
- putcurs(16,0);
- gets(buff);
- while (buff[i] >0)
- {
- pcdos(5,buff[i++]);
- }
- pcdos(5,CR);
- pcdos(5,LF);
- clearline(16);
- }
-
- /* Printer functions */
-
- getinall(s,l,u,c,t)
- int *s,l,u,c,*t;
- {
- int buff[41], n;
-
- while (TRUE)
- {
- clearline(16);
- putcurs(16,0);
- puts(s);
- gets(buff);
- n = atoi(buff);
- clearline(16);
- if (n <= l | n >= u)
- bell();
- else
- break;
- }
- prt3chr(ESC,c,n);
- finmes(t);
- }
- prt3chr(s,t,u) /* Output 3 chars to the printer */
- char s,t,u;
- {
- prt2chr(s,t);
- prtchr(u);
- }
-
- prt2chr(s,t) /* Output 2 chars to the printer */
- char s,t;
- {
- prtchr(s);
- prtchr(t);
- }
-
- prtchr(s) /* Output a char to the printer */
- char s;
- {
- finmes("Ready Printer");
- pcdos(5,s);
- clearline(20);
- }
-
- /* Display functions */
-
- putline(s) /* Send a line to display with cr/lf */
- char *s;
- {
- puts(s);
- putchar(CR);
- }
-
- finmes(s) /* Send a finish message to line 20 */
- char *s;
- {
- putcurs(20,0);
- puts(s);
- }
-
- clearline(n) /* Clear 40 columns of line n */
- int n;
- {
- putcurs(n,0);
- puts(" ");
- }
-
- putcurs(r,c) /* Put cursor at a specified row and column */
- int r,c;
- {
- int a,b,d;
-
- a = 2;
- b = 0;
- d = 0;
- int10(a,d,b,d,d,d,r,c);
- }
-
- atoi(s) /* Convert a string to integer */
- char *s;
- {
- int n;
- n = 0;
- while (*s >= '0' && *s <= '9')
- {
- n = 10 * n + *s - '0';
- s++;
- }
- return(n);
- }